import goods from "../../../../../vuex的API/shopacrt/src/store/mudules/goods";

function setItem(name,item) {
    localStorage.setItem(name,JSON.stringify(item))
}
function getItem(name) {
    return JSON.parse(localStorage.getItem(name) || '[]')
}

const state ={
    //购物车数据
    car:getItem('car'),
    //在购物车中点击结算的时候将商品放进来
    buy:getItem('buy')
}
const getters = {
    //获取商品数量
    getGoodsCount(state){
        const goods ={}
        state.car.forEach(item =>{
            goods[item.id] = item.count
        })
        return goods
    },
    //获取商品状态
    getGoodsSelected(state){
        const goods ={}
        state.car.forEach(item =>{
            goods[item.id] = item.selected
        })
        return goods
    },
    //获取选中商品的数量
    getSelectedCount(state){
        var count =0
        state.car.forEach(item =>{
           if (item.selected){
               count += item.count
           }
        })
        return count
    },
    //获取选中商品
    getSelectedGoods(state){
        var goods ={}
        state.car.forEach(item =>{
            if (item.selected){
               goods[item.id] = item
            }
        })
        return goods
    },
    //获取要购买的商品
    getBuy(state){
        var goods = {}
        state.buy.forEach(item =>{
                goods[item.id] = item
        })
        return goods
    }
}
const actions = []
const mutations = {
    addCar(state,goodsinfo){
        var flag = false
        state.car.some(item =>{
            if (item.id == goodsinfo.id){
                item.count += parseInt(goodsinfo.count)
                flag = true
                return true
            }
        })
        if (!flag){
            state.car.push(goodsinfo)
        }
        setItem('car',state.car)
    },
    updateGoodsInfo(state,goodsinfo){
        state.car.some(item =>{
            if (item.id == goodsinfo.id){
                item.count = parseInt(goodsinfo.count)
                return true
            }
        })
        setItem('car',state.car)
    },
    updateGoodsSelected(state,info){
        state.car.some(item =>{
            if (item.id == info.id){
             item.selected = info.selected
            }
        })
        setItem('car',state.car)
    },
    removeCar(state,id){
        state.car.some((item,i) =>{
            if (item.id == id){
              state.car.splice(i,1)
                return true
            }
        })
        setItem('car',state.car)
    },
    setBuy(state,goods){
        state.buy = []
        if (goods){
            state.buy.push(goods)
        }else {
            state.car.some(item =>{
                if (item.selected){
                    state.buy.push(item)
                }
            })
        }
        setItem('buy',state.buy)
    }
}

export default {
    namespaced:true,
    state,
    getters,
    actions,
    mutations
}